#pragma once
//建立MDI程序框架

#include<QMainWindow>

class QMdiArea;
class QComboBox;
class QFontComboBox;
class MyChild;
class QMdiSubWindow;
class QSignalMapper;
class QPrinter;
class MyWord:public QMainWindow
{
	Q_OBJECT
public:
	MyWord(QWidget *parent=nullptr);
	~MyWord();

signals:

protected:
	void closeEvent(QCloseEvent* event);
	
private slots:
	//更新菜单
	void updateMenus();
	//新建文件操作
	void fileNew();
	//打开文件
	void fileOpen();
	//保存文件
	void fileSave();
	//另存为
	void fileSaveAs();

	//打印
	void filePrint();
	//打印预览
	void filePrintPreview();
	void printPreview(QPrinter*);

	//撤销
	void undo();
	//重做
	void redo();
	//剪切
	void cut();
	//复制
	void copy();
	//粘贴
	void paste();

	//加粗
	void textBold();
	//倾斜
	void textItalic();
	//下划线
	void textUnderLine();

	//字体
	void textStyle(int);
	//字号
	void textFamily(const QString& f);
	//字大小
	void textSize(const QString& p);

	//文本对齐
	void textAlign(const QAction* a);
	//文本颜色
	void textColor();

	void about();

	//创建子窗口
	MyChild* createMyChild();
	//更新窗口菜单
	void updateWindowMenu();

private:
	void createActions();
	void createMenu();
	void createToolBars();
	void createStatusBar();

	void enabledText();
	//活动窗口
	MyChild* activeMyChild();
	//查找子窗口
	QMdiSubWindow* findMyChild(const QString& fileName);

private:
	QMdiArea* mdiArea;
	QSignalMapper* windowMapper;	//子窗口的信号映射器

	//点击“文件”出现的
	QMenu* fileMenu;
	QAction* newAct;
	QAction* openAct;
	QAction* saveAct;
	QAction* saveAsAct;
	QAction* printAct;
	QAction* printPreviewAct;
	QAction* exitAct;

	//点击“编辑”出现的
	QMenu* editMenu;
	QAction* undoAct;
	QAction* redoAct;
	QAction* cutAct;
	QAction* copyAct;
	QAction* pasteAct;

	//点击"格式"出现的
	QMenu* formatMenu;
	QMenu* fontMenu;	//子菜单
	QMenu* alignMenu;	//子菜单
	QAction* boldAct;
	QAction* italiAct;
	QAction* underLineAct;
	QAction* leftAlignAct;
	QAction* centerAct;
	QAction* rightAlignAct;
	QAction* justifyAct;
	QAction* colorAct;

	//点击“窗口”出现的
	QMenu* windowMenu;
	QAction* closeAct;
	QAction* closeAllAct;
	QAction* tileAct;
	QAction* cascadeAct;
	QAction* nextAct;
	QAction* previousAct;
	QAction* separatorAct;

	//点击“帮助”出现的
	QMenu* helpMenu;
	QAction* aboutAct;
	QAction* aboutQtAct;

	/********************************/
	/*"工具条"开发*/
	QToolBar* fileToolBar;		//"文件"工具条
	QToolBar* editToolBar;		//"编辑"工具条
	QToolBar* formatToolBar;	//"格式"工具条
	QToolBar* comboToolBar;		//组合选择栏
	QComboBox* comboStyle;		//标号和编号类型选择栏
	QFontComboBox* comboFont;	//字体选择框
	QComboBox* comboSize;		//字号选择框
};